    .section vector_table
    .word stack
    .word handle_reset
    .word handle_others
    .word handle_others
    .word handle_others
    .word handle_others
    .word 0
    .word 0
    .word 0
    .word 0
    .word handle_others
    .word 0
    .word 0
    .word handle_others
    .word handle_others

    .text

    .thumb_func
handle_reset:

    @ init data
    ldr r0, =data_start
    ldr r1, =data_end
    ldr r2, =data_src
init_data_start:
    cmp r0, r1
    beq init_data_end
    ldr r3, [r2]
    str r3, [r0]
    add r0, r0, #4
    add r2, r2, #4
    b init_data_start
init_data_end:

    @ init bss
    ldr r0, =bss_start
    ldr r1, =bss_end
    ldr r2, =0;
init_bss_start:
    cmp r0, r1
    beq init_bss_end
    str r2, [r0]
    add r0, r0, #4
    b init_bss_start
init_bss_end:

    @ call entry
    bl entry
    b .

    .thumb_func
handle_others:
    b .
